package com.pearadmin.system.service.impl;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Set;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pearadmin.common.web.domain.request.PageDomain;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.pearadmin.system.mapper.SysAxisShakeMapper;
import com.pearadmin.system.domain.SysAxisShake;
import com.pearadmin.system.service.ISysAxisShakeService;
import redis.clients.jedis.Jedis;

import javax.annotation.Resource;

/**
 * 动态更新主轴震动Service业务层处理
 * 
 * @author Ryan
 * @date 2021-04-07
 */
@Service
public class SysAxisShakeServiceImpl implements ISysAxisShakeService 
{
    @Resource
    private SysAxisShakeMapper sysAxisShakeMapper;

    /**
     * 查询动态更新主轴震动
     * @param id 动态更新主轴震动ID
     * @return 动态更新主轴震动
     */
    @Override
    public SysAxisShake selectSysAxisShakeById(String id)
    {
        return sysAxisShakeMapper.selectSysAxisShakeById(id);
    }

    /**
     * 根据日期查询数据库中是否存在这条数据
     *
     */
    @Override
    public int selectShakeByTime(SysAxisShake sysAxisShake){
           return sysAxisShakeMapper.selectShakeByTime(sysAxisShake);
    }

    /**
     * 查询动态更新主轴震动列表
     * 
     * @param sysAxisShake 动态更新主轴震动
     * @return 动态更新主轴震动
     */
    @Override
    public List<SysAxisShake> selectSysAxisShakeList(SysAxisShake sysAxisShake)
    {
        return sysAxisShakeMapper.selectSysAxisShakeList(sysAxisShake);
    }

    /**
     * 查询动态更新主轴震动
     * @param sysAxisShake 动态更新主轴震动
     * @param pageDomain
     * @return 动态更新主轴震动 分页集合
     * */
    @Override
    public PageInfo<SysAxisShake> selectSysAxisShakePage(SysAxisShake sysAxisShake, PageDomain pageDomain)
    {
        PageHelper.startPage(pageDomain.getPage(),pageDomain.getLimit());
        List<SysAxisShake> data = sysAxisShakeMapper.selectSysAxisShakeList(sysAxisShake);
        return new PageInfo<>(data);
    }

    /**
     * 新增动态更新主轴震动
     * 
     * @param sysAxisShake 动态更新主轴震动
     * @return 结果
     */

    @Override
    public int insertSysAxisShake(SysAxisShake sysAxisShake)
    {
        return sysAxisShakeMapper.insertSysAxisShake(sysAxisShake);
    }

    /**
     * 修改动态更新主轴震动
     * 
     * @param sysAxisShake 动态更新主轴震动
     * @return 结果
     */
    @Override
    public int updateSysAxisShake(SysAxisShake sysAxisShake)
    {
        return sysAxisShakeMapper.updateSysAxisShake(sysAxisShake);
    }

    /**
     * 删除动态更新主轴震动对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteSysAxisShakeByIds(String[] ids)
    {
        return sysAxisShakeMapper.deleteSysAxisShakeByIds(ids);
    }

    /**
     * 删除动态更新主轴震动信息
     * 
     * @param id 动态更新主轴震动ID
     * @return 结果
     */
    @Override
    public int deleteSysAxisShakeById(String id)
    {
        return sysAxisShakeMapper.deleteSysAxisShakeById(id);
    }

    /**
     * 根据id获得redis中储存的最新数据
     */
    @Override
    public SysAxisShake getRedisShakeById(String id){
        SysAxisShake sysAxisShake=new SysAxisShake();
        Jedis jedis=new Jedis();
        jedis.auth("root");
        //查看最新更新的数据
        Set<String> setResult = jedis.zrevrange(id,0,0);
        System.out.println(setResult);
        //set集合转String数组
        String[] targetSuccess = setResult.toArray(new String[setResult.size()]);
        System.out.println(targetSuccess);
        //String数组转String
//      String str = ArrayUtils.toString(targetSuccess, ","); // 数组转字符串(逗号分隔,首尾加大括号)
//      System.out.println(str);
        // 数组转字符串,其实使用的也是遍历
        String str = StringUtils.join(targetSuccess);
        System.out.println(str);
        //字符串转list<String>
        String phoneIdList =StringUtils.strip(str,"{}");
        List<String> lis = Arrays.asList(phoneIdList.split(","));

        String skakeType=lis.get(0);
        String skakeAList=lis.get(1);
        String skakeBList=lis.get(2);

        System.out.println("skakeAList"+skakeAList);

        //获得skakeA的值
        List<String> lisA=Arrays.asList(skakeAList.split(":"));
        String skakeA=lisA.get(1);
        //获得skakeB的值
        List<String> lisB=Arrays.asList(skakeBList.split(":"));

        String skakeB=lisB.get(1);
        //double类型的数据只保留2位小数
        BigDecimal a = new BigDecimal(skakeA);
        Double A = a.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        sysAxisShake.setShakeA(A);
//        BigDecimal b = new BigDecimal(skakeB);
//        Double B = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
//        sysAxisShake.setShakeB(B);
        return sysAxisShake;
    }
}
